home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / sunftpd_traversal.nasl < prev    next >
Text File  |  2005-03-31  |  3KB  |  130 lines

  1. #
  2. # This script was written by Xue Yong Zhi <xueyong@udel.edu>
  3. #
  4. #
  5. # See the Nessus Scripts License for details
  6. #
  7.  
  8. if(description)
  9. {
  10.  script_id(11374);
  11.  script_version ("$Revision: 1.2 $");
  12.  #NO bugtraq_id
  13.  script_cve_id("CAN-2001-0283");
  14.  name["english"] = "SunFTP directory traversal";
  15.  
  16.  script_name(english:name["english"]);
  17.  
  18.  desc["english"] = "
  19. Directory traversal vulnerability in SunFTP build 9 allows
  20. remote attackers to read arbitrary files via .. (dot dot)
  21. characters in various commands, including (1) GET, (2) MKDIR,
  22. (3) RMDIR, (4) RENAME, or (5) PUT.
  23.  
  24. Solution : Switching to another FTP server, SunFTP is discontinued.
  25.  
  26.  
  27. Risk factor : High";
  28.  
  29.  
  30.  script_description(english:desc["english"]);
  31.  
  32.  
  33.  script_summary(english:"Checks if the remote SunFTP has directory traversal vulnerability");
  34.  script_category(ACT_MIXED_ATTACK);
  35.  script_family(english:"FTP");
  36.  
  37.  
  38.  script_copyright(english:"This script is Copyright (C) 2003 Xue Yong Zhi",
  39.            francais:"Ce script est Copyright (C) 2003 Xue Yong Zhi");
  40.  
  41.  script_dependencie("find_service_3digits.nasl");
  42.  script_require_keys("ftp/login"); 
  43.  script_require_ports("Services/ftp", 21);
  44.  exit(0);
  45. }
  46.  
  47. #
  48. # The script code starts here :
  49. #
  50.  
  51. include("ftp_func.inc");
  52.  
  53. port = get_kb_item("Services/ftp");
  54. if(!port)port = 21;
  55. if(!get_port_state(port))exit(0);
  56.  
  57. if(safe_checks())
  58. {
  59.  banner = get_ftp_banner(port: port);
  60.  if(banner)
  61.  {
  62.   if("SunFTP b9"><banner) {
  63.     desc = "
  64. Buffer overflow in SunFTP build 9(1) allows remote attackers to cause
  65. a denial of service or possibly execute arbitrary commands by sending
  66. more than 2100 characters to the server.
  67.  
  68. *** Nessus reports this vulnerability using only
  69. *** information that was gathered. Use caution
  70. *** when testing without safe checks enabled.
  71.  
  72. Solution : Switching to another FTP server, SunFTP is discontinued.
  73.  
  74.  
  75. Risk factor : High";
  76.  
  77.   security_hole(port:port, data:desc);
  78.   }
  79.  }
  80.  
  81.  exit(0);
  82. }
  83.  
  84.  
  85. login = get_kb_item("ftp/login");
  86. pass  = get_kb_item("ftp/password");
  87.  
  88. if(!login)exit(0);
  89.  
  90. # Connect to the FTP server
  91. soc = open_sock_tcp(port);
  92. if(soc)
  93. {
  94.   if(ftp_log_in(socket:soc, user:login, pass:pass))
  95.   {
  96.     #dir name may already exists, try 5 times to get one unused
  97.     for(i=0;i<5;i++) {
  98.         dir=crap(i+10);
  99.         mkdir=string("MKD ../", dir, "\r\n");
  100.         cwd=string("CWD ", dir, "\r\n");
  101.         rmd=string("RMD ../", dir, "\r\n");
  102.         up=string("CWD ..\r\n");
  103.  
  104.         #Try to creat a new dir
  105.         send(socket:soc, data:mkdir);
  106.         b = ftp_recv_line(socket:soc);
  107.         if(ereg(pattern:"^257 .*", string:b)) {
  108.  
  109.             #If the system is not vunerable, it may create the
  110.             #new dir in the current dir, instead of the parent dir.
  111.             #if we can CWD into it, the system is not vunerable.
  112.             
  113.             send(socket:soc, data:cwd);
  114.             b = ftp_recv_line(socket:soc);
  115.             if(!ereg(pattern:"^250 .*", string:b)) {
  116.                 security_hole(port);
  117.             } else {
  118.                 send(socket:soc, data:up);    #cd..
  119.             }
  120.             send(socket:soc, data:rmd);
  121.             break;
  122.         }
  123.     }
  124.  
  125.     ftp_close(socket:soc);
  126.  
  127.   }
  128.  
  129. }
  130.